//var createError = require('http-errors');//错误模块
var express = require('express');//express核心模块
var path = require('path');//路径模块
var cookieParser = require('cookie-parser');//处理前端传入的cookie
var logger = require('morgan');//日志依赖

var indexRouter = require('./routes/index');//路由文件
var usersRouter = require('./routes/users');//路由文件
var huaweiRouter = require("./routes/huawei")
const authToken = require("./middleware/authToken");
const session = require("express-session")
var app = express();//开启一个node服务

// 设置模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));//使用日志插件
app.use(express.json());//返回json
app.use(express.urlencoded({ extended: false }));//处理post请求
app.use(cookieParser());//使用cookie依赖
//静态资源托管
//目的:对于图片 视频 音乐 文件这类静态资源 我们不需要手动写接口进行相应,托管成静态,让服务器自动响应就行
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.resolve("assets")))
app.use(function (req, res, next) {
    // res.header("access-control-allow-origin","*");
    next()//将控制权释放给下一个中间件
})


//使用session

app.use(session({
    secret: 'MY_NAME_IS_XIANG', //加密的字符串，里面内容可以随便写
    resave: false,//强制保存session,即使它没变化
    saveUninitialized: true, //强制将未初始化的session存储，默认为true
    cookie: {maxAge: 1000*60}//过期时间 单位是毫秒
}))


app.use(authToken)

app.use("/jsonp", function (req, res, next) {
    //req.query获取客户端通过query传递参数
    console.log(req.query);
    //在后端调用前端传递回调函数,通过实参的方式,把数据返回
    let callback = req.query.cb;
    let data = { state: true, status: 3000, msg: "jsonp请求成功" }
    res.send(`${callback}(${JSON.stringify(data)})`)
    next()
})
app.use('/', indexRouter);
app.use('/users', usersRouter);
//一级路径
app.use("/huawei", huaweiRouter)


module.exports = app;
